home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 5 / Gold Medal Software - Volume 5 (Gold Medal) (1995).iso / music / esbk110.arj / MAIN.C < prev    next >
Text File  |  1994-12-17  |  1KB  |  74 lines

  1. #include <windows.h>
  2.  
  3. static HANDLE hInst;
  4.  
  5. int far pascal LibMain(HANDLE hInstance, WORD wDataSeg, WORD wHeapSize, LPSTR lpszCmdLine)
  6. {
  7.   hInst = hInstance;
  8.   if (wHeapSize > 0) UnlockData(0);
  9.   return 1;
  10. }
  11.  
  12. static LPSTR findArgLong(LPSTR args, long *l)
  13. {
  14.   BOOL neg;
  15.  
  16.   while(*args == ' ') args++;
  17.   *l  = 0;
  18.   neg = FALSE;
  19.   if (*args == '-')
  20.   {
  21.     neg = TRUE;
  22.     args++;
  23.   }
  24.   while(*args >= '0' && *args <= '9')
  25.   {
  26.     *l = (*l) * 10 + (*args) - '0';
  27.     args++;
  28.   }
  29.   if (neg) *l = -(*l);
  30.   return args;   
  31. }
  32.  
  33. static LPSTR findArgHandle(LPSTR args, HANDLE *h)
  34. {
  35.   LPSTR p;
  36.   long  l;
  37.  
  38.   p  = findArgLong(args, &l);
  39.   *h = (HANDLE) (WORD) l;
  40.   return p;
  41. }
  42.  
  43. int far pascal __export reverse(LPSTR args)
  44. {
  45.   HANDLE m;
  46.   long   from, to;
  47.   int    huge *sp, huge *ep;
  48.   char   huge *p;
  49.   int    c;
  50.  
  51.   if (!(args = findArgHandle(args, &m))) return 0;
  52.   if (!(args = findArgLong(args, &from))) return 0;
  53.   if (!(args = findArgLong(args, &to))) return 0;
  54.   if (!m) return 0;
  55.  
  56.   p = (char huge *) GlobalLock(m);
  57.   if (!p) return 0;
  58.   sp = (int huge *) (p + from);
  59.   ep = (int huge *) (p + to - 1);
  60.  
  61.   while(sp < ep)
  62.   {
  63.     c   = *sp;
  64.     *sp = *ep;
  65.     *ep = c;
  66.     sp++;
  67.     ep--;
  68.   }
  69.   GlobalUnlock(m);
  70.  
  71.   return 0;
  72. }
  73.  
  74.